#ifndef DATABASECONFIG_H
#define DATABASECONFIG_H

#include <QObject>
#include <QString>

class DatabaseConfig : public QObject
{
    Q_OBJECT
public:
    explicit DatabaseConfig(QObject *parent = nullptr);

    // 从配置文件加载配置
    bool loadConfig(const QString &configPath);

    // 获取配置值（只读接口）
    QString host() const { return m_host; }
    int port() const { return m_port; }
    QString databaseName() const { return m_databaseName; }
    QString userName() const { return m_userName; }
    QString password() const { return m_password; }
    
    // 获取连接选项
    int connectTimeout() const { return m_connectTimeout; }
    int readTimeout() const { return m_readTimeout; }
    int writeTimeout() const { return m_writeTimeout; }
    bool useSSL() const { return m_useSSL; }
    QString charset() const { return m_charset; }
    bool autoReconnect() const { return m_autoReconnect; }

    // 设置配置值（修改接口）
    void setHost(const QString &host) { m_host = host; }
    void setPort(int port) { m_port = port; }
    void setDatabaseName(const QString &name) { m_databaseName = name; }
    void setUserName(const QString &user) { m_userName = user; }
    void setPassword(const QString &pwd) { m_password = pwd; }
    
    // 设置连接选项
    void setConnectTimeout(int timeout) { m_connectTimeout = timeout; }
    void setReadTimeout(int timeout) { m_readTimeout = timeout; }
    void setWriteTimeout(int timeout) { m_writeTimeout = timeout; }
    void setUseSSL(bool useSSL) { m_useSSL = useSSL; }
    void setCharset(const QString &charset) { m_charset = charset; }
    void setAutoReconnect(bool autoReconnect) { m_autoReconnect = autoReconnect; }

private:
    // 私有成员变量（封装数据，通过接口访问）
    QString m_host = "localhost";
    int m_port = 3306;
    QString m_databaseName = "supermarket_db";
    QString m_userName = "root";
    QString m_password = "123456";
    
    // 连接选项私有成员变量
    int m_connectTimeout = 30;      // 连接超时时间（秒）
    int m_readTimeout = 60;         // 读取超时时间（秒）
    int m_writeTimeout = 60;        // 写入超时时间（秒）
    bool m_useSSL = false;          // 是否使用SSL连接
    QString m_charset = "utf8mb4";  // 字符集设置
    bool m_autoReconnect = true;    // 是否自动重连
};

#endif // DATABASECONFIG_H
